import { get, post } from '../ajax'

import { getAjaxBaseUrl } from '../handler'
import type {
  AjaxPagingResult,
  AjaxTimeIntervalParams,
  AuxiliaryInputInfo,
  EnergyCockpitR1Result,
} from '@/types'
import type { CONTAIN_SUB } from '@/enum/modules/public'

const controller = getAjaxBaseUrl(
  '/dataManagement',
  '/energy',
)

/**
 * 分页加载指标小时数据
 * @field startTime 格式 YYYY-MM-DD HH
 * @field endTime 格式 YYYY-MM-DD HH
 */
export function loadIndicatorHourPage(pageNumber: number = 1, pageSize: number = 15, option?: {
  indicatorName?: string
  startTime?: string
  endTime?: string
}) {
  return post<AjaxPagingResult>(
    `${controller}/loadIndicatorHourPage`,
    {
      pageNumber,
      pageSize,
      ...option,
    },
  )
}

/**
 * 分页加载指标日数据
 * @field startTime 格式 YYYY-MM-DD
 * @field endTime 格式 YYYY-MM-DD
 */
export function loadIndicatorDayPage(pageNumber: number = 1, pageSize: number = 15, option?: {
  indicatorName?: string
  startTime?: string
  endTime?: string
}) {
  return post<AjaxPagingResult>(
    `${controller}/loadIndicatorDayPage`,
    {
      pageNumber,
      pageSize,
      ...option,
    },
  )
}

/**
 * 分页加载指标月数据
 * @field startTime 格式 YYYY-MM
 * @field endTime 格式 YYYY-MM
 */
export function loadIndicatorMonthPage(pageNumber: number = 1, pageSize: number = 15, option?: {
  indicatorName?: string
  startTime?: string
  endTime?: string
}) {
  return post<AjaxPagingResult>(
    `${controller}/loadIndicatorMonthPage`,
    {
      pageNumber,
      pageSize,
      ...option,
    },
  )
}

/**
 * 分页加载指标年数据
 * @field startTime 格式 YYYY
 * @field endTime 格式 YYYY
 */
export function loadIndicatorYearPage(pageNumber: number = 1, pageSize: number = 15, option?: {
  indicatorName?: string
  startTime?: string
  endTime?: string
}) {
  return post<AjaxPagingResult>(
    `${controller}/loadIndicatorYearPage`,
    {
      pageNumber,
      pageSize,
      ...option,
    },
  )
}

/** 分页加载指标实时数据 */
export function loadIndicatorActualTimePage(pointId: number, containSub?: CONTAIN_SUB) {
  return get(`${controller}/loadIndicatorActualTimePage`, {
    pointId,
    containSub,
  })
}

/**
 * 某指标的某日资源消耗小时数据折线图
 * @param dataTime 格式 YYYY-MM-DD
 */
export function loadHourResourceListByIndicator(indicatorCode: string, dataTime?: string) {
  return post(`${controller}/loadHourResourceListByIndicator`, {
    indicatorCode,
    dataTime,
  })
}

/**
 * 某指标的某月资源消耗日数据折线图
 * @param dataTime 格式 YYYY-MM
 */
export function loadDayResourceListByIndicator(indicatorCode: string, dataTime?: string) {
  return post(`${controller}/loadDayResourceListByIndicator`, {
    indicatorCode,
    dataTime,
  })
}

/**
 * 某指标的每年资源消耗月数据折线图
 * @param dataTime 格式 YYYY-MM
 */
export function loadMonthResourceListByIndicator(indicatorCode: string, dataTime?: string) {
  return post(`${controller}/loadMonthResourceListByIndicator`, {
    indicatorCode,
    dataTime,
  })
}

/** 加载各资源月周期消耗量（能源数据驾驶舱右3） */
export function loadEnergyCycleConsume(params?: AjaxTimeIntervalParams) {
  return get<Record<string, number>>(
    `${controller}/loadEnergyCycleConsume`,
    params,
  )
}

/** 加载各资源月周期消耗折标量（能源数据驾驶舱左1） */
export function loadEnergyCycleDiscountConsume(params?: AjaxTimeIntervalParams) {
  return get<Record<string, number>>(
    `${controller}/loadEnergyCycleDiscountConsume`,
    params,
  )
}

/** 加载各资源月周期折线图（能源数据驾驶舱右1） */
export function loadEnergyCycleChart(params?: AjaxTimeIntervalParams) {
  return get<EnergyCockpitR1Result>(
    `${controller}/loadEnergyCycleChart`,
    params,
  )
}

/** 加载企业产能月周期数据（能源数据驾驶舱左2） */
export function loadEnterpriseCapacityList(params?: AjaxTimeIntervalParams) {
  return get<AuxiliaryInputInfo[]>(
    `${controller}/loadEnterpriseCapacityList`,
    params,
  )
}

/** 加载点位下指标月周期数据(区域能源驾驶舱) */
export function loadCycleDataByPointId(params: {
  pointId: number
  startTime?: string
  endTime?: string
}) {
  return get(`${controller}/loadCycleDataByPointId`, params)
}

/** 加载各资源月周期消耗列表 */
export function loadEnergyCycleList(params: {
  type: string
  startTime?: string
  endTime?: string
}) {
  return get(`${controller}/loadEnergyCycleList`, params)
}
